package com.ruoyi.im.mapper;

import com.ruoyi.im.domain.FriendApplication;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 好友申请 数据层
 * 
 * @author ruoyi
 * @date 2018-11-06
 */
public interface FriendApplicationMapper 
{
	/**
     * 查询好友申请信息
     * 
     * @param id 好友申请ID
     * @return 好友申请信息
     */
	public FriendApplication selectFriendApplicationById(Long id);
	
	/**
     * 查询好友申请列表
     * 
     * @param friendApplication 好友申请信息
     * @return 好友申请集合
     */
	public List<FriendApplication> selectFriendApplicationList(FriendApplication friendApplication);
	
	/**
     * 新增好友申请
     * 
     * @param friendApplication 好友申请信息
     * @return 结果
     */
	public int insertFriendApplication(FriendApplication friendApplication);
	
	/**
     * 修改好友申请
     * 
     * @param friendApplication 好友申请信息
     * @return 结果
     */
	public int updateFriendApplication(FriendApplication friendApplication);
	
	/**
     * 删除好友申请
     * 
     * @param id 好友申请ID
     * @return 结果
     */
	public int deleteFriendApplicationById(Long id);
	
	/**
     * 批量删除好友申请
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deleteFriendApplicationByIds(String[] ids);

	/**
	 * 查询用户自己的申请验证列表
	 * @param claimantId
	 * @return
	 */
	public List<FriendApplication> findFriendApplicationListByclaimantId(@Param("claimantId") String claimantId, @Param("applyType") String applyType);
	/**
	 * 查询申请加入自己群的验证信息列表
	 * @param userId
	 * @return
	 */
	public List<FriendApplication> findUserGroupListByUserId(@Param("userId") String userId);
	/**
	 * 查询自己被其他用户邀请进群需要自己同意的验证信息
	 * @param userId
	 * @return
	 */
	public List<FriendApplication> findClaimantUserByClaimantId(@Param("userId") String userId);

	/**
	 * 查询自己是否申请加过该用户为好友的申请信息
	 * @param claimantId
	 * @param applicantId
	 * @return
	 */
	FriendApplication findFriendApplicationByApplicantIdAndClaimantId(@Param("claimantId") String claimantId, @Param("applicantId") String applicantId);

	/**
	 * 判断是否已经申请过加入群的验证申请
	 * @param applicantId
	 * @param groupsId
	 * @return
	 */
	FriendApplication findFriendApplicationByApplicantIdAndGruopsId(@Param("applicantId") String applicantId, @Param("groupsId") String groupsId);

	/**
	 * 判断是否已经邀请过该用户加入群
	 * @param applicantId
	 * @param groupsId
	 * @return
	 */
	FriendApplication invitationsVerification(@Param("applicantId") String applicantId, @Param("groupsId") String groupsId, @Param("claimantId") String claimantId);

}